package me.zhengjie.modules.transfer.factory.service;

import me.zhengjie.modules.transfer.factory.vo.InformationDetailInfo;
import me.zhengjie.modules.transfer.factory.vo.InformationInfo;
import me.zhengjie.modules.transfer.factory.vo.InformationOtherInfo;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 校验接口
 */
public interface TransCheckService {


    /**
     * 转入申请基本信息校验
     *
     * @param aac001
     */
    void TransferApplyBasicCheck(String aac001);


    /**
     * 校验人员的参保缴费状态是否为
     * * 暂停缴费
     */
    void checkAac031(String aac001, String aae140, String aab359);

    /**
     * 校验人员的离退休标识（企业机关同时存在的省份，需要判断险种是否终止缴费）
     *
     * @param aac001
     * @param aae140
     */
    Map checkAac084(String aac001, String aae140);

    /**
     * 校验人员是否有欠费
     *
     * @param aac001
     * @param aae140
     */
    void checkQF(String aac001, String aae140);

    /**
     * 校验人员是否有重复缴费
     */
    void checkCFJF(String aac001, String aae140);

    /**
     * 校验人员是否有在途
     *
     * @param aac001
     * @param aaa121
     */
    void checkZTYE(String aac001, String aaa121);

    /**
     * 校验是否重复转出
     *
     * @param aae270
     */
    void checkCFZC(String aae270);

    /**
     * 转入申请：校验是否重复开联系函（同险种，同行政区划）
     */
    void checkCFKH(String aac001, String aae140, String aae241, String aab301, String aab299);

    /**
     * 转入：校验是否已经办理转入申请
     *
     * @param aae270
     * @param aae140
     * @param aae241
     */
    void checkApplication(String aae270, String aae140, String aae241);

    /**
     * 转入：校验是否已经办理接收临时账户通知书
     */
    void checkNotifition(String aac001, String aae270);

    /**
     * 校验城乡转城职信息表
     */
    void checkInformationOfResidentToStaff(InformationInfo informationInfo, List<InformationDetailInfo> detailInfos);

    /**
     * 校验城镇转到城乡的信息表
     */
    void checkInformationOfStaffToResident(InformationInfo informationInfo, List<InformationDetailInfo> detailInfos);

    /**
     * 城乡转城乡信息表校验
     */
    void checkinfromationOfResident(InformationInfo informationInfo, List<InformationDetailInfo> detailInfos);

    /**
     * 城职信息表校验
     */
    void checkInformationOfStaff(InformationInfo informationInfo, List<InformationDetailInfo> informationDetails);

    /**
     * 机关信息表校验
     *
     * @param informationInfo
     * @param informationDetails
     */
    void checkInformationOfOffice(InformationInfo informationInfo, List<InformationDetailInfo> informationDetails);

    /**
     * 城职信息表明细校验
     */
    void checkInformationOfStaffDetails(InformationInfo informationInfo, List<InformationDetailInfo> informationDetails);

    /**
     * 城职信息表明细校验
     */
    void checkInformationOfOfficeDetails(InformationInfo informationInfo, List<InformationDetailInfo> informationDetails);

    /**
     * 军人信息表校验
     *
     * @param informationInfo
     * @param informationOtherInfos
     * @param detailInfos
     */
    void checkinfromationOfSoldier(InformationInfo informationInfo, List<InformationOtherInfo> informationOtherInfos, List<InformationDetailInfo> detailInfos);

    /**
     * 校验转移在途业务
     *
     * @param aac001
     * @return
     */
    boolean checkTransferRoute(String aac001);

    /**
     * 校验是否多号
     */
    void checkDH(String aac002, String aac001, String aae140);

    /**
     * 校验是否多号
     *
     * @param aac001
     * @param aae140
     * @param ac01List
     */
    void checkDH_excludeAac008(String aac001, String aae140, List<Map> ac01List);

    /**
     * 校验是否办理转出
     */
    void checkOut(String aae270, String aac002);

    /**
     * 云南特殊校验是否多号
     *
     * @param aac002
     */
    void checkDHYN(String aac002);

    /**
     * 校验养老保险关系转入后是否已匹配基金
     */
    void checkTransferInNoMatch(String aac002);

    /**
     * 转移账户校验
     *
     * @param aac001
     * @param aae140
     */
    void checkTransAccount(String aac001, String aae140);

    /**
     * 存在手工缴费校验
     *
     * @param aac001
     * @param aaz159
     * @param aae140
     */
    void checkTransAc08(String aac001, String aaz159, String aae140);

    /**
     * 转出登记缴费基数和信息表基数和不一致校验
     */
    void checkTransAae180(String aac001, String aaz159, String aae140, List<Map> informationDetails);

    public  void checkAac008(String aac001, String aae140);
}
